package com.liveneo.adapter.mobile.service;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import com.liveneo.adapter.base.entity.PrpmCaseInfo;
import com.liveneo.adapter.base.entity.PrpmLoggerInfo;
import com.liveneo.adapter.mobile.model.PrpmCountReupload;
import com.liveneo.adapter.mobile.model.dto.PrpmBoardCaseInfoDto;
import com.liveneo.adapter.mobile.model.dto.PrpmCaseInfoDto;
import com.liveneo.adapter.mobile.model.dto.PrpmEndCaseInfoDto;
import com.liveneo.adapter.mobile.model.dto.PrpmHesunDetailDto;
import com.liveneo.adapter.mobile.model.dto.PrpmImgCheckDetailDto;
import com.liveneo.adapter.mobile.model.dto.PrpmRealCaseInfoDto;
import com.liveneo.adapter.mobile.model.dto.PrpmReportCaseInfoDto;
import com.liveneo.adapter.mobile.model.dto.PrpmUserStatusDto;
import com.liveneo.adapter.mobile.model.dto.VsResponseHeadDto;
import com.liveneo.adapter.mobile.model.request.LossItemRequest;

/**
 * @Title:CaseInfoService接口
 * @Description:
 * @Author:zhoupan
 * @Since:2016-11-12 下午17:15:00
 * @Version:1.0.0
 * @Copyright (c) 北京朗泰恒盛信息技术有限公司-版权所有
 */
@SuppressWarnings("rawtypes")
public interface CaseInfoService {
    // 根据报案号获取案件信息
    public abstract List<PrpmCaseInfo> getCaseInfoList(List caseNoList);

    public abstract PrpmCaseInfo getCaseInfo(String caseNo);

    public abstract PrpmCaseInfo getCaseInfo(LossItemRequest request);

    public abstract int updateByPrimaryKey(PrpmCaseInfo record);

    public abstract int updateByPrimaryKeySelective(PrpmCaseInfo record);
    
    public abstract List<PrpmCaseInfo> getCaseInfoList(int currentPage, int pagesize, ArrayList<String> caseNoList);

    public abstract List<PrpmCaseInfo> selectAllCaseInfo(int currentPage, int pagesize, PrpmCaseInfoDto caseInfo);

    public abstract int selectByReUploadFlag(Integer reUploadFlag);

    public abstract PrpmCaseInfo selectByPrimaryKey(String caseInfoId);

    public abstract List<PrpmCaseInfo> getCaseInfo(List uuidList);

    public abstract List<PrpmCaseInfo> selectByUuidListCaseStatus(List uuidList);

    public abstract List<PrpmCaseInfo> selectCostCaseInfo(PrpmCaseInfoDto caseInfoDto);

    public abstract int getCaseInfoCount(PrpmCaseInfoDto caseInfoDto);

    public abstract int save(PrpmCaseInfo record);

    public abstract int delete(String caseNo);

    public abstract List<PrpmCaseInfo> selectRealAllCaseInfo(PrpmCaseInfoDto prpmCaseInfoDto);

    public abstract List<PrpmCaseInfo> selectByUuidAndCaseStatusDown(List caseUuids, String pageSize, String pageNo)
            throws Exception;

    public abstract List<PrpmCaseInfo> selectByUuidAndCaseStatusUp(List caseUuids, String pageSize, String pageNo)
            throws Exception;

    public abstract List<PrpmEndCaseInfoDto> selectEndCaseByBean(int currentPage, int pagesize,
            PrpmEndCaseInfoDto endCase);

    public abstract List<PrpmRealCaseInfoDto> selectRealCaseInfoByBean(int currentPage, int pagesize,
            PrpmRealCaseInfoDto realCaseInfo);

    public abstract List<PrpmEndCaseInfoDto> selectAllEndCaseByBean(PrpmEndCaseInfoDto exportEndCase);

    public abstract List<PrpmRealCaseInfoDto> selectRealCaseInfoByBean(PrpmRealCaseInfoDto realCaseInfo);

    public abstract List<PrpmUserStatusDto> selectMobileUserStatus(List<String> uuidList);

    public abstract List<PrpmUserStatusDto> selectCheckUserStatus(List<String> uuidList);

    public abstract List<PrpmUserStatusDto> selectAllCompanyCaseStatus(List<String> uuidList);

    public abstract List<PrpmBoardCaseInfoDto> selectboardCaseInfo(int currentPage, int pagesize,
            PrpmCaseInfoDto caseInfoDto);

    public abstract List<PrpmHesunDetailDto> selectHesunUserDetail(int currentPage, int pagesize,
            PrpmHesunDetailDto hesunDetail);

    public abstract List<String> selectAllCaseUuid(List<String> uuidList);

    public abstract List<PrpmImgCheckDetailDto> selectImgCaseDetail(String imgCheck_caseUuid);

    public abstract PrpmCountReupload selectCountReupload(List<String> uuidList);

    /**
     * 根据uuid和caseStatus查询小于casestatus的案件信息
     * 
     * @param uuids
     * @param caseStatus
     * @return
     */
    public abstract List<PrpmCaseInfo> selectByUuidAndCaseStatus(List<String> uuids, int caseStatus);

    public abstract void imageCheckSuccess(String caseUuid) throws Exception;

    public abstract void updateReCaseStatus(String uuid) throws Exception;

    public abstract void updateCaseInfoFromClaim(PrpmCaseInfo record);

    public abstract void uploadImgsByCaseNo(String caseNo) throws Exception;

    /**
     * 查询机构报表
     * 
     * @return
     * @throws Exception
     */
    public abstract List<PrpmReportCaseInfoDto> selectReportNum() throws Exception;

    public abstract void addLoggerInfo(PrpmLoggerInfo prpmloggerinfo);

    public abstract VsResponseHeadDto autoCollectDoc(String registNo) throws Exception;

    public abstract List<PrpmCaseInfo> getCaseInfoByUuidOrTime(Map<String, Object> params);

    public abstract PrpmCaseInfo getCaseInfoByCaseNoAndUuid(String caseNo, String caseUuid);
    
    /**
      * @Title: updateCaseInofStateAndBill
      * @Description: 根据案件号更新任务状态和计费规则
      * @param @return
      * @param @throws Exception 设定文件
      * @return int 返回类型
      * @throws
     */
    public int updateCaseInofStateAndBill(String caseNo)throws Exception;

}
